package framework
{
	import flash.events.TimerEvent;
	import flash.utils.Timer;
	
	import mx.utils.UIDUtil;

	/**
	 * 定时器统一管理类
	 */
	public class TimerMgr
	{
		/**定时器数组**/
		private static var timers:Array = [];
		
		/**
		 * 创建定时器
		 * @param p_interval 定时器间隔 单位：毫秒
		 * @param 要定时调用的函数，无参数
		 * @param 重复次数，0为无限次数
		 * @return 生成的定时器ID
		 */
		public static function createTimer(p_interval:Number, p_callback:Function, p_repeatCount:int = 0):String
		{
			var timer:Timer = new Timer(p_interval, p_repeatCount);
			timer.addEventListener(TimerEvent.TIMER, timerHandler);
			timer.start();
			var id:String = UIDUtil.createUID();
			timers[id] = {timer:timer, handler:timerHandler};
			return id;
			//定时器回调函数
			function timerHandler(p_evt:TimerEvent):void
			{
				if(p_callback != null)
					p_callback();
			}
		}
		
		/**
		 * 暂停某个定时器
		 */
		public static function pauseTimer(p_timerId:String):void
		{
			if(!timers[p_timerId])return;
			var timer:Timer = timers[p_timerId]["timer"] as Timer;
			if(timer && timer.running)
				timer.stop();
		}
		
		/**
		 * 移除某个定时器
		 */
		public static function removeTimer(p_timerId:String):void
		{
			if(!timers[p_timerId])return;
			var timer:Timer = timers[p_timerId]["timer"] as Timer;
			if(timer){
				timer.stop();
				timer.removeEventListener(TimerEvent.TIMER, timers[p_timerId]["handler"]);
			}
		}
		
		/**
		 * 继续运行某个定时器
		 */
		public static function resumeTimer(p_timerId:String):void
		{
			if(!timers[p_timerId])return;
			var timer:Timer = timers[p_timerId]["timer"] as Timer;
			if(timer && !timer.running)
				timer.start();
		}
	}
}